home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / dev / amos / am_mui10.lha / MUI / ListView-Hooks.s < prev    next >
Text File  |  1992-02-26  |  2KB  |  123 lines

  1.  
  2.     incdir    cde:prog/devpac/include/include
  3.     
  4.     include    intuition/intuition_lib.i
  5.     include    libraries/mui.i
  6.  
  7.  
  8.  
  9. * Popup-Listview hook functions for AMOS-MUI.
  10. *
  11. *
  12.  
  13.     bra    hook_List_To_String
  14.     bra    hook_String_In_List
  15.  
  16.  
  17. ****************************************************************************
  18. * This hook copies the active entry from a listview into a string gadget.
  19. *
  20.  
  21. hook_List_To_String:
  22.  
  23.  
  24. *A1=StringObj
  25. *A2=ListViewObj
  26.  
  27.     movem.l    a1,-(sp)    
  28.     move.l     -4(a2),a0     ;A0=CLASS
  29.     move.l     8(a0),a3      ;A3=DISPATCHER
  30.     lea     tag_getactive(pc),a1
  31.     move.l    a1,d0
  32.     add.l    #16,d0
  33.     move.l    d0,8(a1)    ;Get active entry directly to other taglist!
  34.     jsr    (a3)
  35.     movem.l    (sp)+,a0
  36.     lea    tag_setstring(pc),a1
  37.     jsr    _LVOSetAttrsA(a6)
  38.     moveQ    #1,d0    ;MUI_TRUE                
  39.     rts
  40.     
  41. tag_getactive
  42.  
  43.     dc.l    MUIM_List_GetEntry
  44.     dc.l    MUIV_List_GetEntry_Active    
  45.     dc.l    0    ;Pointer to active_entry    
  46. tag_setstring    dc.l    MUIA_String_Contents
  47. active_entry    dc.l    0    
  48.  
  49. ****************************************************************************        
  50. * This hook scans a listview gadget for the string in a string gadget, and
  51. * activates it in the listview gadget if it is found.
  52. *
  53.  
  54. hook_String_In_List:
  55.  
  56. * Assumes Intuitionbase is in 1st Hook dataword.
  57.  
  58.     move.l    a2,-(sp)
  59.     move.l    #MUIA_String_Contents,d0
  60.     move.l    a1,a0
  61.     lea    search_string(pc),a1
  62.     jsr    _LVOGetAttr(a6)        
  63.  
  64.     move.l    (sp),a2    ;Prepare DoMethod & StrCmp
  65.     move.l    -4(a2),a0
  66.     move.l    8(a0),a3
  67.     lea    search_tags(pc),a1
  68.     lea    test_string(pc),a4
  69.     lea    search_string(pc),a5
  70.     moveQ    #0,d0
  71.     tst.l    (a5)
  72.     beq.s    .emptystring
  73.     move.l    (a5),a5
  74.     move.l    a4,8(a1)    
  75.     movem.l    a0-5,-(sp)
  76.  
  77. .nextentry    movem.l    (sp),a0-5
  78.     move.l    d0,4(a1)
  79.     move.l    d0,-(sp)
  80.     jsr    (a3)    ;Get next entry
  81.     move.l    (sp)+,d0
  82.     movem.l    (sp),a0-5
  83.     tst.l    (a4)
  84.     beq.s    .notinlist
  85.     move.l    (a4),a4        
  86.  
  87.     ;Now a StrCmp between a4 & a5
  88.     
  89. .next    tst.b    (a4)
  90.     beq.s    .s1end
  91.     tst.b    (a5)
  92.     beq.s    .fail    
  93.     cmp.b    (a4)+,(a5)+    
  94.     bne.s    .fail    
  95.     bra.s    .next
  96.             
  97. .s1end    tst.b    (a5)
  98.     beq.s    .succeed
  99.     
  100. .fail    addQ    #1,d0
  101.     bra.s    .nextentry
  102.  
  103. .notinlist    move.l    #MUIV_List_ActiveOff,d0        
  104.  
  105. .succeed    movem.l    (sp)+,a0-a5
  106. .emptystring    move.l    (sp)+,a0
  107.     lea    set_list(pc),a1     ; change the active entry
  108.     move.l    d0,4(a1)
  109.     jsr    _LVOSetAttrsA(a6)
  110.     moveQ    #1,d0
  111.     rts
  112.  
  113. search_string    dc.l    0
  114. test_string    dc.l    0
  115.  
  116. search_tags    dc.l    MUIM_List_GetEntry
  117.     dc.l    0
  118.     dc.l    0
  119.  
  120. set_list    dc.l    MUIA_List_Active
  121.     dc.l    0
  122.     
  123.